// 指针
#include <stdlib.h>
#include <stdio.h>

using namespace std;

int main131() {
    // 声明指针
    int i1 = 10;
    int *p1 = &i1; // int类型指针，建议声明就赋值，否则就会是一个野指针
    printf("i1 address %x\n", &i1);
    printf("p1 value %x\n", p1);
    printf("p1 address %x\n", &p1);
    // 使用&获取地址，使用*获取地址指向的值
    printf("p1 address value %d\n", *p1);
    printf("p1 size %d\n", sizeof(p1));

    int array1[] = {11, 22, 33, 44};
    // 数组是一块连续的内存,array_p就是一块内存地址，从低位开始
    // 数据存储的是内存中连续的数据，指针是指向内存的变量，数组名就是内存的首地址
    int *array_p = array1;
    for (size_t i = 0; i < 4; ++i) {
        // 地址++就是移动到下一个内存地址
        printf("array value = %d\n", *array_p++);
    }

    printf("-------------------------------\n");

    return 0;
}